<?php
/*
 * Padres asociados a un paciente y enfermedades.
 * @Autor: Andrés Ubilla.
 */
class Listar extends TPage{
    
    public function onLoad($param){
        parent::onLoad($param);
        if(!$this->IsPostBack){
            $this->cargarInterfaz();
        }
    }
    
    private function cargarInterfaz(){
        $this->validarSession(); 
        $arrPadres = $this->obtenerPadres();
        $oPaciente = $this->obtenerDatosPaciente();
        $this->iniciarControles($arrPadres, $oPaciente);
    }
    
    private function validarSession(){
        $oUsuario = Util::getSession("Usuario");
        if(Util::isNullOrEmpty($oUsuario)){
            $this->Response->redirect($this->Service->constructUrl("Home"));
        }
    }        
    
    private function obtenerDatosPaciente(){
        try{
            $idPaciente = Util::isNull($this->Request["idPaciente"], "-1");

            $oPaciente = new Paciente();        

            if($idPaciente != "-1"){
                $oPacienteBLL = new PacienteBLL();
                $oPaciente = $oPacienteBLL->obtenerPorId($idPaciente);

                return $oPaciente;
            }else{              
                $oPaciente = null;
                return $oPaciente;
            }
        } catch (Exception $e){
            throw new Exception($e->getMessage());
        }        
    }
    
    private function obtenerPadres(){
        $idPaciente = Util::isNull($this->Request["idPaciente"], "-1");
        
        if($idPaciente != "-1"){
            try{        
                $oPadres = new Padres();
                $oPadresBLL = new PadresBLL();
                $arrPadres = $oPadresBLL->listar($idPaciente);
                return $arrPadres;
                
            }catch(Exception $e){
                throw new Exception($e->getMessage());
            }
        }
    }
    
    private function iniciarControles($arrPadres, $oPaciente){ 
        $mensaje = Util::getSession("Mensaje");
        if(!Util::isNullOrEmpty($mensaje)){
            $this->litAlert->Text = $mensaje;
            Util::setSession("Mensaje", null);
        }
        
        if($oPaciente != null){
            try{
                $this->imgPaciente->ImageUrl = $oPaciente->getImagen();
                $this->litNombrePaciente->Text = $oPaciente->getNombre() ." ". $oPaciente->getApellido();
            }catch(Exception $e){
                throw new Exception($e->getMessage());
            }
        }else{
            $this->litAlert->Text = Util::setMensajeUsuario("No se ha seleccionado ning&uacute;n paciente, utilice el buscador superior.", Util::MENSAJE_ALERTA);
        }
        
        if(count($arrPadres) > 0 && count($arrPadres) < 2){
            $this->pnlBotonAgregar->Visible = true;
            $this->pnlSinRegistros->Visible = false;
            $this->pnlPadres->Visible = true;
            $this->dgPadres->DataSource = $arrPadres;
            $this->dgPadres->dataBind();
        }else if(count($arrPadres) > 0 && count($arrPadres) == 2){
            $this->pnlBotonAgregar->Visible = false;
            $this->pnlSinRegistros->Visible = false;
            $this->pnlPadres->Visible = true;
            $this->dgPadres->DataSource = $arrPadres;
            $this->dgPadres->dataBind();
        }else{
            $this->pnlBotonAgregar->Visible = true;
            $this->pnlPadres->Visible = false;
            $this->pnlSinRegistros->Visible = true;
        }
    }
    
    public function buscarPacientes($sender,$param) {        
        $consulta = $param->getToken();
        
        $oPacienteBLL = new PacienteBLL();
        
        $arrPacientes = $oPacienteBLL->obtenerPorBusqueda($consulta);
        $listaPacientes = array();
                
        foreach ($arrPacientes as $row){
            $paciente = array('id' => $row->getId(), 'paciente' => $row->getNombre());
            $listaPacientes[] = $paciente;
        }

        $this->AutoComplete->DataSource = $listaPacientes;
        $this->AutoComplete->dataBind();
    }
    
    public function pacienteSeleccionado($sender,$param){              
        $id = $sender->Suggestions->DataKeys[ $param->selectedIndex ];
        
        if($id > 0){
            $this->Response->redirect("index.php?page=Padres.Listar&idPaciente=" . $id);
        }else{
            $this->Response->redirect("index.php?page=Paciente.Agregar");
        }        
    }   
    
    public function btnEliminarFamiliarOnClick($sender, $param){
        try{
            $id = $this->idFamiliar->Value;

            $oPadreBLL = new PadresBLL();
            $result = $oPadreBLL->eliminar($id);

            if(!Util::isNullOrEmpty($result)){
                $this->litAlert->Text = Util::setMensajeUsuario("Error al eliminar familiar, por favor vuelva a intentarlo.", Util::MENSAJE_ERROR);
            }else{ 
                $this->cargarInterfaz();
                $this->litAlert->Text = Util::setMensajeUsuario("Familiar ha sido eliminado exitosamente.", Util::MENSAJE_OK);            
            }
        } catch (Exception $e){
            throw new Exception($e->getMessage());
        }
    }
}
?>
